package com.tom.architect.day17.simple2;

import java.util.ArrayList;
import java.util.List;

/**
 * 代码多，不便于拓展。
 * eg：新增一种货箱，
 */
public class SplitService {

        public static List<TruckCar> splitBox(IBox box) {
        List<TruckCar> carList = new ArrayList<>();
        while (box.getNumber() > 200) { // 要进行拆分
            // 新增对象的时候，把代码放到各自的子类中去，简化这边拆分代码。
            IBox newBox = box.copy();
            newBox.setNumber(200);

            TruckCar truckCar = new TruckCar();
            truckCar.addBox(newBox);
            carList.add(truckCar);
            box.setNumber(box.getNumber() - 200); // 数量-200
        }

        // 最后不足200的箱子
        TruckCar truckCar = new TruckCar();
        truckCar.addBox(box);
        carList.add(truckCar);
        return carList;
    }



    // 把箱子进行拆分，多辆车来装.
//    public static List<TruckCar> splitBox(IBox box) {
//        List<TruckCar> carList = new ArrayList<>();
//        while (box.getNumber() > 200) { // 要进行拆分
//            if (box instanceof PlasticClampBox) {
//                PlasticClampBox orderBox = (PlasticClampBox) box;
//                PlasticClampBox newBox = new PlasticClampBox();
//                newBox.setName(orderBox.getName());
//                newBox.setNumber(200);
//
//                TruckCar truckCar = new TruckCar();
//                truckCar.addBox(newBox);
//                carList.add(truckCar);
//                box.setNumber(box.getNumber() - 200);
//            } else if (box instanceof CarPartBox) {
//                CarPartBox orderBox = (CarPartBox) box;
//                CarPartBox newBox = new CarPartBox(); // 每辆车的箱子
//                newBox.setName(orderBox.getName());
//                newBox.setNumber(200);
//                newBox.setCarBrand(orderBox.getCarBrand());
//
//                TruckCar truckCar = new TruckCar();
//                truckCar.addBox(newBox);
//                carList.add(truckCar);
//                box.setNumber(box.getNumber() - 200);
//            }
//        }
//
//        // 最后不足200的箱子
//        TruckCar truckCar = new TruckCar();
//        truckCar.addBox(box);
//        carList.add(truckCar);
//
//        return carList;
//    }


}
